#ifndef __MARS_GP_CL_PLATFORM_H__
#define __MARS_GP_CL_PLATFORM_H__

#include "MarsGPPlatform.h"

namespace GP
{

class CLPlatform : public Platform
{
public:
									CLPlatform( PlatformVendor ePlatformVendor, cl_platform_id id );
	virtual							~CLPlatform();

	virtual void					InitDevice();

	cl_platform_id					GetPlatformId() const;

private:
	void							InitDeviceByType( cl_device_type clType, DeviceType deviceType );

	cl_platform_id					m_platformId;

	typedef std::map< DeviceType, cl_context >	DeviceCtxMap;
	typedef DeviceCtxMap::iterator				DeviceCtxMapItr;
	typedef DeviceCtxMap::const_iterator		DeviceCtxMapConstItr;

	DeviceCtxMap					m_mapDeviceCtx;
};

} // end of namespace GP

#endif // end of #ifndef __MARS_GP_CL_PLATFORM_H__